package cc.rengu.oltp.service.common.dao;

import cc.rengu.oltp.service.common.entity.SignAcctInfo;

import java.util.List;

/**
 * 签约信息表操作接口
 * Created by 王成 on 2020/2/6
 */
public interface SignAcctInfoMapper {
    /**
     * 登记用户签约信息
     *
     * @param signAcctInfo 签约信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertSignAcctInfo(SignAcctInfo signAcctInfo) throws Exception;

    /**
     * 登记用户签约信息
     *
     * @param signAcctInfo 签约信息
     * @param transaction  是否事务操作：true-事务，其它-非事务
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertSignAcctInfo(SignAcctInfo signAcctInfo, Boolean transaction) throws Exception;

    /**
     * 根据主键更新用户签约信息
     *
     * @param signAcctInfo 签约信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateSignAcctInfoByPrimaryKey(SignAcctInfo signAcctInfo) throws Exception;

    /**
     * 根据主键更新用户签约信息
     *
     * @param signAcctInfo 签约信息
     * @param transaction  是否事务操作：true-事务，其它-非事务
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateSignAcctInfoByPrimaryKey(SignAcctInfo signAcctInfo, Boolean transaction) throws Exception;

    /**
     * 根据法人行标识、签约账号、签约标记类型、签约类型、签约主体更新用户签约信息
     *
     * @param signAcctInfo 签约信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateSignAcctInfoBySignAcctNo(SignAcctInfo signAcctInfo) throws Exception;

    /**
     * 根据用户标识更新用户所有签约信息
     *
     * @param signAcctInfo 签约信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateSignAcctInfoByUserId(SignAcctInfo signAcctInfo) throws Exception;

    /**
     * 根据主键查询用户签约信息
     *
     * @param instId        多法人标识
     * @param signTokenType 签约标识类型
     * @param signToken     签约标识
     * @param signInst      签约主体
     * @return 签约信息
     * @throws Exception 异常
     */
    SignAcctInfo selectSignAcctInfoByPrimaryKey(String instId, String signTokenType, String signToken, String signInst) throws Exception;

    /**
     * 根据签约流水号查询用户签约信息
     *
     * @param instId     多法人标识
     * @param signSeqNum 签约流水号
     * @return 用户签约信息
     * @throws Exception 异常
     */
    SignAcctInfo selectSignAcctInfoBySignSeqNum(String instId, String signSeqNum) throws Exception;

    /**
     * 根据签约协议号查询签约信息
     *
     * @param instId    多法人标识
     * @param signToken 签约标记号
     * @return 签约信息
     * @throws Exception 异常
     */
    List<SignAcctInfo> selectSignAcctInfoBySignToken(String instId, String signToken) throws Exception;

    /**
     * 根据用户查询用户签约信息
     *
     * @param instId   多法人标识
     * @param userId   用户标识
     * @param signInst 签约主体
     * @return 签约信息
     * @throws Exception 异常
     */
    List<SignAcctInfo> selectSignAcctInfoBySignTyUserId(String instId, String userId, String signInst) throws Exception;

    /**
     * 根据签约账号查询用户签约信息
     *
     * @param instId     多法人标识
     * @param signAcctNo 签约账号
     * @return 签约信息
     * @throws Exception 异常
     */
    List<SignAcctInfo> selectSignAcctInfoBySignAcctNo(String instId, String signAcctNo) throws Exception;

    /**
     * 根据证件类型及证件号码查询用户签约信息
     *
     * @param instId   多法人标识
     * @param certType 证件类型
     * @param certNo   证件号码
     * @return 签约信息
     * @throws Exception 异常
     */
    List<SignAcctInfo> selectSignAcctInfoByCertInfo(String instId, String certType, String certNo) throws Exception;
}
